/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package datos;

import Negocios.Cliente;
import Negocios.Producto;
import java.sql.*;
import java.util.LinkedList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Martha
 */
public class ClienteDB {
        public LinkedList Clientes(){
        LinkedList <Cliente> cli=new LinkedList();
        Conexion c=new Conexion();
        try {
            Connection cn=c.getConeccion();
            Statement st=cn.createStatement();
            String sql="Select * from Clientes";
            ResultSet rs=st.executeQuery(sql);
            while (rs.next()){
                Cliente unCliente=new Cliente();
                unCliente.setCI(rs.getInt("Cedula"));
                unCliente.setNombreCliente(rs.getString("Nombre"));
                unCliente.setApellidoCliente(rs.getString("Apellido"));
                unCliente.setDireccionCliente(rs.getString("Direccion"));
                unCliente.setTelefonoCliente(rs.getString("Telefono"));
                cli.add(unCliente);
            }
            c.Commit();
            c.Desconectar();
        } catch (SQLException ex)
        {
            c.RollBack();          
        }
        return cli;
    }
    //Agregar Clientes con procedimientos almacenados
    public void AgregarCliente(int ci, String nombre, String apellido, String direccion,String telefono ) throws SQLException {
        Conexion c=new Conexion();
        Connection var = c.getConeccion();
        CallableStatement cs = var.prepareCall("{call AgregarClientes(?,?,?,?,?)}");
        cs.setInt(1, ci);
        cs.setString(2, nombre);
        cs.setString(3, apellido);
        cs.setString(4, direccion);
        cs.setString(5, telefono);
        cs.execute();
        var.commit();
        c.getConeccion().close();        
    }
    
    public Cliente Buscar(String ci){
        Cliente unCliente=null;
        Conexion c=new Conexion();
        try {
            Connection cn=c.getConeccion();
            Statement st=cn.createStatement();
            String sql="Select * from Clientes where cedula='"+ci+"'";
            ResultSet rs=st.executeQuery(sql);
            while (rs.next()){
                unCliente=new Cliente();
                unCliente.setCI(rs.getInt("cedula"));
                unCliente.setNombreCliente(rs.getString("Nombre"));
                unCliente.setApellidoCliente(rs.getString("Apellido"));
                unCliente.setDireccionCliente(rs.getString("Direccion"));
                unCliente.setTelefonoCliente(rs.getString("Telefono"));
            }
            c.Commit();
            c.Desconectar();
        } catch (SQLException ex) {
            c.RollBack();        
        }
        return unCliente;
    }

    public void Modificar(Cliente unCliente) {
        Conexion c=new Conexion();
        Connection cn=null;
        try {
            cn=c.getConeccion();
            Statement st;
            st = cn.createStatement();
            String sql="update clientes set nombre='"+unCliente.getNombreCliente()+"', apellido='"+unCliente.getApellidoCliente()+"', direccion='"+unCliente.getDireccionCliente()+"',telefono='"+unCliente.getTelefonoCliente()+"' where cedula='"+unCliente.getCI()+"'";
            st.executeUpdate(sql);
            cn.commit();
            cn.close();
        } catch (SQLException ex) {
            try {
                cn.rollback();
                Logger.getLogger(ClienteDB.class.getName()).log(Level.SEVERE, null, ex);
            } catch (SQLException ex1) {
                Logger.getLogger(ClienteDB.class.getName()).log(Level.SEVERE, null, ex1);
            }
        }
        
    }
}
